package servidor.bbdd;

import beans.Estudiant;
import common.EOlympicsException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * Classe GestorEstudiants
 * @author Juan Luís Chávez Lobato i Jesús Hernàndez Garcia
 */
public class GestorEstudiants {
    
    private GestorDiscConnexio gestor;
    private Connection connexio;

    /**
     * Constructor de la classe GestorEstudiants
     * Crea un nou gestor de disc.
     */
    public GestorEstudiants() throws EOlympicsException {
        this.gestor = new GestorDiscConnexio();
        this.gestor.obreConnexioBD();
        this.connexio = gestor.getConnexio();
    }

    /**
     * Constructor de la classe GestorEstudiants
     * Utilitza el gestor de disc passat com a paràmetre
     * @param gdc connexió a la BD de tipus GestorDiscConnexio
     */
    public GestorEstudiants(GestorDiscConnexio gdc) {
        this.gestor   = gdc;
        this.connexio = gdc.getConnexio();
    }
    
    /**
     * Consulta d'un estudiant pel seu Login
     * @param login Login de l'estudiant
     * @return objecte Estudiant amb Login igual al passat com a paràmete
     * @exception EOlympicsException
     */
    public Estudiant obtenirEstudiant(String login) throws EOlympicsException {
        Estudiant est = null;
        Statement sentencia = gestor.creaSentencia();
        String select = "SELECT login_estudiante, id_universidad, nombre, apellidos "
                + "FROM ESTUDIANTE WHERE login_estudiante = '" + login + "'" ;
        try {
            ResultSet rs = sentencia.executeQuery(select);
            if (rs.next()) {
                est = new Estudiant(rs.getString(1), rs.getInt(2),
                        rs.getString(3), rs.getString(4));
            }
            rs.close();
            sentencia.close();

        } catch (SQLException sqle) {
            System.out.println(sqle.getMessage());
            throw new EOlympicsException(EOlympicsException.ERR_SQL);
        } catch (Exception e) {
            System.out.println(e.getMessage());
            throw new EOlympicsException(EOlympicsException.ERR_DESC_EXEC);
        }
        return est;
    }

    

}
